﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using ProyectoGrupo5.Negocio;
using ProyectoGrupo5.ClasesDominio;

namespace ProyectoGrupo5.Pruebas
{
    [TestFixture]
    public class TestPostulanteService
    {
        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://ProyectoGrupo5/ProyectoGrupo5/capaNegocio.xml",
                "assembly://ProyectoGrupo5/ProyectoGrupo5/capaPersistencia.xml");
        }
        
        [Test]
        public void TestCrearPostulanteCorrectamente()
        {
            PostulanteService postulanteService = (PostulanteService)this.contexto.GetObject("bolsaTrabajo");
            Assert.NotNull(postulanteService);
            Postulante nuevoPostulante = new Postulante();
            nuevoPostulante.CodigoPostulante = 3;
            nuevoPostulante.ApellidoPaterno = "Rodriguez";
            nuevoPostulante.ApellidoMaterno = "Castillo";
            nuevoPostulante.Nombre = "Miguel";
            nuevoPostulante.Sexo = "M";
            nuevoPostulante.Correo = "mrodriguez@hotmail.com";
            nuevoPostulante.FechaNacimiento = Convert.ToDateTime("22/03/1980");
            nuevoPostulante.Contrasena = "mr22031980";
            try
            {
                nuevoPostulante = postulanteService.CrearPostulante(nuevoPostulante);
            }
            catch (Exception e)
            {
                Assert.Fail(string.Format("Excepción: {0}", e.Message));
            }
            Assert.NotNull(nuevoPostulante);
            Assert.Greater(nuevoPostulante.CodigoPostulante, 0);
        }

        [Test]
        public void TestEliminarPostulante()
        {
            PostulanteService postulanteService = (PostulanteService)this.contexto.GetObject("postulanteService");
            Assert.NotNull(postulanteService);
            Postulante antiguoPostulante = new Postulante();
            antiguoPostulante.CodigoPostulante = 2;

            try
            {
                postulanteService.EliminarPostulante(antiguoPostulante.CodigoPostulante);
            }
            catch (Exception e)
            {
                Assert.Fail(string.Format("Excepción: {0}", e.Message));
            }
            Assert.IsNull(antiguoPostulante);
        }
    }
}